package edu.istu.asu07_1.live.model;

import java.util.ArrayList;
import java.util.List;

import edu.istu.asu07_1.live.configs.Constants;

/**
 * Класс, реализующий генератор временных промежутков
 * между ходами.
 * @author romanches
 *
 */
public class TaktGenerator extends Thread{

	private List<Taktable> taktablesList;

	private boolean isStopped;

	private int modulatingTimePeriod;

	/**
	 * Конструктор с тактируемым объектом в качестве параметра
	 * @param taktable
	 */
	public TaktGenerator(Taktable taktable) {
		isStopped = false;

		taktablesList = new ArrayList<Taktable>();
		taktablesList.add(taktable);
		this.modulatingTimePeriod = Constants.MODELATING_TIME_PERIOD;
	}

	/**
	 * Конструктор с тактируемым объектом и временным промежутком между тактами
	 * @param taktable
	 * @param modelatingTimePeriod
	 */
	public TaktGenerator(Taktable taktable, int modelatingTimePeriod){
		isStopped = false;

		taktablesList = new ArrayList<Taktable>();
		taktablesList.add(taktable);
		this.modulatingTimePeriod = modelatingTimePeriod;
	}

	//TODO сделать по уму
	@Override
	public void run() {
		while(true){
			if(!isStopped){
				try {
					for(int i=0; i<taktablesList.size(); i++){
						taktablesList.get(i).takt();
					}
					Constants.TOTAL_LIVE_TIME ++;
					Thread.currentThread().sleep(modulatingTimePeriod);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public List<Taktable> getTaktablesList() {
		return taktablesList;
	}

	public void setTaktablesList(List<Taktable> taktablesList) {
		this.taktablesList = taktablesList;
	}

}
